<?php
// +----------------------------------------------------------------------
// | INPHP
// | Copyright (c) https://inphp.cc All rights reserved.
// | 该文件源码由INPHP官方提供，使用协议以INPHP官方公告为准。
// +----------------------------------------------------------------------
// | 配置
// +----------------------------------------------------------------------
namespace app\fs\http\api;

use app\admin\attributes\auth;
use Inphp\Core\Modules;
use QCloud\COSSTS\Sts;

#[auth] class config
{
    public int $uid = 0;
    public array $user = ['admin' => 0];
    public function cos(): array
    {
        $config = Modules::getModule('fs')->getConfig("cos");
        $config = is_array($config) ? $config : [];
        $bucket = $config["bucket"] ?? '';
        $region = $config["region"] ?? '';
        $secretId = $config["secretId"] ?? '';
        $secretKey = $config["secretKey"] ?? '';
        if (empty($bucket) || empty($region) || empty($secretId) || empty($secretKey)) {
            return compact('bucket', 'region', 'secretId', 'secretId');
        }
        //获取临时文件权限
        $sts = new Sts();
        $tempKeys = $sts->getTempKeys([
            'url' => 'https://sts.tencentcloudapi.com/', // url和domain保持一致
            'domain' => 'sts.tencentcloudapi.com', // 域名，非必须，默认为 sts.tencentcloudapi.com
            'proxy' => '',
            'secretId' => $secretId, // 固定密钥,若为明文密钥，请直接以'xxx'形式填入，不要填写到getenv()函数中
            'secretKey' => $secretKey, // 固定密钥,若为明文密钥，请直接以'xxx'形式填入，不要填写到getenv()函数中
            'bucket' => $bucket, // 换成你的 bucket
            'region' => $region, // 换成 bucket 所在园区
            'durationSeconds' => 1800, // 密钥有效期
            'allowPrefix' => ["attachment/users/{$this->uid}/*"], // 这里改成允许的路径前缀，可以根据自己网站的用户登录态判断允许上传的具体路径，例子： a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
            // 密钥的权限列表。简单上传和分片需要以下的权限，其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
            'allowActions' => array ("*"),
            //
            'condition' => [
                //文件类型限制
                'string_like' => ['cos:content-type' => ''],
                //上传大小限制
                'numeric_less_than_equal' => ['cos:content-length' => 5 * 1024 * 1024]
            ],

        ]);
        return compact('bucket', 'region', 'tempKeys');
    }
}